<?php 
// +----------------------------------------------------------------------
// | RXThinkCMF_EVTP5.1_PRO前后端分离旗舰版框架 [ RXThinkCMF ]
// +----------------------------------------------------------------------
// | 版权所有 2018~2021 南京RXThinkCMF研发中心
// +----------------------------------------------------------------------
// | 官方网站: http://www.rxthink.cn
// +----------------------------------------------------------------------
// | 作者: ZhangXuanNeng <rxthinkcmf@163.com>
// +----------------------------------------------------------------------
// | 免责声明:
// | 本软件框架禁止任何单位和个人用于任何违法、侵害他人合法利益等恶意的行为，禁止用于任何违
// | 反我国法律法规的一切平台研发，任何单位和个人使用本软件框架用于产品研发而产生的任何意外
// | 、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其造成的损失 (包括但不限于直接、间接、附带
// | 或衍生的损失等)，本团队不承担任何法律责任。本软件框架只能用于公司和个人内部的法律所允
// | 许的合法合规的软件产品研发，详细声明内容请阅读《框架免责声明》附件；
// +----------------------------------------------------------------------

namespace app\admin\service;

use app\admin\model\BoxGmRedis;
use app\admin\model\ChannelEcsConfig;
use app\channel\model\BoxGmSerOrder;

/**
 * 渠道管理-服务类
 * @author steven
 * @since: 2024/01/22
 * Class ChannelService
 * @package app\admin\service
 */
class ChannelRedisAssetsService extends BaseService
{
    /**
     * 构造函数
     * LevelService constructor.
     */
    public function __construct()
    {
        $this->model = new BoxGmRedis();
    }
	
	/**
     * 获取数据列表
     * @return array
     * @since 2023/08/07
     * @author steven
     */
    public function getList(): array
    {
        $param = request()->param();
        // 查询条件
        $map = [];
        $id  = isset($param['id']) ? trim($param['id']) : '';
        if ($id) {
            $map[] = ['a.id', '=', $id];
        }
        // 渠道名称
        $name = isset($param['game_name']) ? trim($param['game_name']) : '';
        if ($name) {
            $map[] = ['b.game_name', 'like', "%{$name}%"];
        }
        $redis_name = isset($param['redis_name']) ? trim($param['redis_name']) : '';
        if ($redis_name) {
            $map[] = ['a.redis_name', 'like', "%{$redis_name}%"];
        }
        $status = isset($param['status']) ? trim($param['status']) : '';
        if ($status != '') {
            $map[] = ['a.status', 'like', "%{$status}%"];
        }
        // 有效标识
        $mark = isset($param['mark']) ? (int)$param['mark'] : 0;
        if ($mark) {
            $map[] = ['a.mark', '=', $mark];
        }
        $list = $this->model->alias('a')
            ->field('a.*,b.game_name,c.nickname')
            ->leftJoin('box_gm_game b', 'a.gm_game_id = b.id and b.mark = 1')
            ->leftJoin('user_channel c', 'a.channel_user_id = c.id')
            ->where($map)
            ->order('a.id desc')
            ->paginate($param['limit'])
            ->toArray();
        $arr = $list['data']??[];
        $gm_order_ids   = array_column($arr, 'order_id');
        $ser_order_list = BoxGmSerOrder::where('id', 'in', $gm_order_ids)->select()->toArray();
        $order_list = array_column($ser_order_list, 'order_num', 'id');
        $ser_list = array_column($ser_order_list, 'ser_data', 'id');
        for ($i = 0; $i < count($arr); $i++) {
            $arr[$i]['order_num']     = $order_list[$arr[$i]['order_id']] ?? '';
            $arr[$i]['ser_data']     = json_decode($ser_list[$arr[$i]['order_id']]) ?? '';
            $arr[$i]['game_name']     = $arr[$i]['game_name'] ?? '暂无';
        }
        //返回结果
        return array(
            "msg"   => '操作成功',
            "code"  => 0,
            "data"  => $arr,
            "count" => $list['total'],
        );
    }

    public function edit()
    {
        $param = request()->param();
        $model = new ChannelEcsConfig();
        if(!isset($param['id'])){
            $res  = $model->where('ecs_name','=',$param['ecs_name'])->find();
            if($res){
                return message('添加失败,该名称已经存在!',false);
            }
        }
        return parent::newEdit($param,false,true); // TODO: Change the autogenerated stub
    }


}